#ifndef __CUBOID_H__
#define __CUBOID_H__

#include "Assembly.h"
#include "Face.h"
#include "Matrix4D.h"

#include <vector>
#include <list>
#include <map>

using std::vector;
using std::list;
using std::map;

class Cuboid : public Assembly
{
public:
	// ctor
	Cuboid();
	
	Cuboid(const Vertex& dim);
	Cuboid(float w, float h, float t);
	
	Cuboid(const Vertex& dim, const Vertex& pos);
	Cuboid(float w, float h, float t,
	       float x, float y, float z);
	       
	Cuboid(const Vertex& dim, const Vertex& pos, const Vertex& rot);
	Cuboid(float w, float h, float t,
	       float x, float y, float z,
	       float a, float b, float g);
	       
	// dtor
	virtual ~Cuboid();
	
	// getter/setter methods for cuboid dimensions
	const Vertex& dimensions() const;
	Vertex& dimensions();
	
private:
	// setup vertex, normals, faces
	void init();
	
	// update the vertex/normals
	void update_vertex();
	
	// x, y, z -- dimensions
	Vertex m_dimensions;
	
	vector<Vertex*> m_vertex;
	vector<Vertex*> m_normal;
};

#endif

